package com.syh.jn.scm.domain.upstream.entity.sale;

import com.syh.core.ddd.domain.AbstractSimpleEntityObject;
import com.syh.jn.scm.dto.upstream.sale.UpSaleReturnGoodsDto;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;
import java.math.RoundingMode;

/**
 * 销售退货单项明细
 */
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class UpSaleReturnOrderItem extends AbstractSimpleEntityObject<Long> {

  //计算已入库总额
  protected BigDecimal calculateTotalInAmount(){
    this.returnTotalInAmount = this.price.multiply(this.returnInQuantity).setScale(2,RoundingMode.HALF_UP);
    return this.returnTotalInAmount;
  }

  /**
   * 归属id
   */
  private Long businessEntityId;
  /**
   * 采购退货单id
   */
  private Long purchaseReturnOrderId;
  /**
   * 商品id
   */
  private Long goodsId;
  /**
   * 商品名称
   */
  private String goodsName;
  /**
   * 分类id
   */
  private Long categoryId;
  /**
   * 品牌id
   */
  private Long goodsBrandId;
  /**
   * 品牌名称
   */
  private String goodsBrandName;
  /**
   * 商品编码
   */
  private String goodsCode;
  /**
   * 所属种类,应用分类编码
   */
  private String categoryCode;
  /**
   * 所属种类名称
   */
  private String categoryName;
  /**
   * 单位
   */
  private String units;
  /**
   * 条码
   */
  private String codeBar;
  /**
   * 单价
   */
  private BigDecimal price;
  /**
   * 商品数量
   */
  private BigDecimal quantity;
  /**
   * 商品发货数量
   */
  private BigDecimal outQuantity;
  /**
   * 规格
   */
  private String specName;
  /**
   * 所属种类,应用分类的父类目录
   */
  private String categoryCatalogCode;
  /**
   * -1 辅助商品  1  基础商品
   */
  private Short isDefaultGoods;
  /**
   * 与基础商品转换率（如果是基础商品 则等于1）
   */
  private BigDecimal conversionRate;
  /**
   * 退货订单数量
   */
  private BigDecimal returnQuantity;
  /**
   * 退货订单商品金额
   */
  private BigDecimal returnTotalAmount;
  /**
   * 退货单发货数量
   */
  private BigDecimal returnOutQuantity;
  /**
   * 退货单发货商品金额
   */
  private BigDecimal returnTotalOutAmount;
  /**
   * 退货签收数量
   */
  private BigDecimal returnInQuantity;
  /**
   * 退货签收商品金额
   */
  private BigDecimal returnTotalInAmount;
  /**
   * 退货备注
   */
  private String remark;
  /**
   * 字典id(差异原因)
   */
  private Long returnReasonId;
}
